import { safeImg } from "@/api/manage/asset";

/**
 * 获取图片二进制并转换为可用的 URL
 * @param {string} filename - 图片文件名/路径
 * @returns {Promise<string>} 返回 blob URL
 */
export function getImageUrl(filename) {
  if (!filename) {
    return Promise.reject(new Error("文件名不能为空"));
  }

  // 如果已经是完整的 URL（http/https/blob/data），直接返回
  if (
    filename.startsWith("http://") ||
    filename.startsWith("https://") ||
    filename.startsWith("blob:") ||
    filename.startsWith("data:image")
  ) {
    return Promise.resolve(filename);
  }

  return safeImg({ filename })
    .then((blob) => {
      if (!blob) {
        throw new Error("获取图片数据失败");
      }

      // 确保是 Blob 对象
      const blobData = blob instanceof Blob ? blob : new Blob([blob]);

      // 转换为 blob URL
      const objectUrl = URL.createObjectURL(blobData);

      return objectUrl;
    })
    .catch((error) => {
      console.error("获取图片 URL 失败:", error);
      throw error;
    });
}

/**
 * 释放 blob URL，避免内存泄漏
 * @param {string} url - blob URL
 */
export function revokeImageUrl(url) {
  if (url && url.startsWith("blob:")) {
    URL.revokeObjectURL(url);
  }
}

